import org.junit.jupiter.api.Test;

/**
 * 递归解法：先递归到倒数第二个节点，然后每两个节点进行反转，然后归到上一个节点，在进行当前节点和下一个节点进行反转
 */
public class _206_反转链表_递归解法 {
    @Test
    public void test(){
    }
    public ListNode reverseList(ListNode head) {
        //递归终止的条件：当只剩下一个节点的时候就不需要反转了
        if (head==null||head.next==null){
            return head;
        }
        //递归到倒数第一个节点，此时listNode就是倒数第一个节点
        ListNode listNode = reverseList(head.next);
        //两个节点进行反转，然后归到上一个节点，在进行反转
        //此时的head就是倒数第二个节点，因为我们传入的是head.next
        head.next.next=head;
        //断开原来两节点的关联，不然形成环了
        head.next=null;
        return listNode;
    }
}
